export function listToTree(data) {
  // let tempdata = [];
  // data.forEach(v => tempdata.push({...v}));
  // 拷贝一份数据   防止在修改数据时修改了原始数据
  let tempData = data.map((v) => ({ ...v }));
  // 将列表转为对象结构   key为id  value为整个对象
  // [{id: 1,name: 33},{id: 2, name: ttt}]  ===>  {1:{id: 1,name: 33}, 2:{id: 2}}
  // let obj = {};
  // tempData.forEach(element => {
  //     obj[element.id] = element;
  // });
  // console.log(obj);
  let tempObj = tempData.reduce((prev, current) => {
    prev[current.id] = current; // {1: {}}
    return prev;
  }, {});

  tempData.forEach((v) => {
    // 如果该元素存在parent字段，代表有父级
    if (v.parent) {
      //
      // tempObj[v.parent].hasChildren = true;
      // v.parent 就是父级的id   7
      // 将该内容添加到父级的children字段中
      if (tempObj[v.parent].children) {
        tempObj[v.parent].children.push(v);
      } else {
        tempObj[v.parent].children = [v];
      }
    }
    // 2.23时发现has_children字段存在问题，单独处理了一下
    v.has_children = v.children ? true : false;
  });

  return tempData.filter((v) => !v.parent);
}

export default {
  listToTree,
};
